#include <iostream>
#include <time.h>
#include "Kurcaci.h"
#include "Aqua.h"
#include "Bolt.h"
#include "Clash.h"
#include "Lahan.h"
#include "player.h"
#include "Times.h"
#include "Story.h"
#include "classinventory.h"
#include "tanaman.h"
#include "classmenu.h"

#include "Kurcaci.cpp"
#include "Aqua.cpp"
#include "Bolt.cpp"
#include "Clash.cpp"
#include "Lahan.cpp"
#include "player.cpp"
#include "Times.cpp"
#include "Story.cpp"
#include "classinventory.cpp"
#include "tanaman.cpp"
#include "classmenu.cpp"

//Jangan lupa memberi -lwinmm dalam mengcompile!
using namespace std;

Player P("");
Lahan L;
Times T;
inventory I;
Aqua A;
Bolt B;
Clash C;
Story S;
Menu M;

int main ()
{
	srand ( time(NULL) );
	A.WakeUp();
	if(A.IsWakeUp())
	{cout<<"Aqua : Saya bangun!"<<endl;}
	else {cout<<"Aqua : Selamat tidur!"<<endl;}
	L.setTanaman(5,6,9); //Menanam ChronoPlant
	L.setTanaman(5,4,9); //Menanam ChronoPlant
	L.setStatus(5,6,5); //Membuat penghalang untuk gerak Aqua, dengan tanaman Planted
	L.setStatus(5,4,5); //Membuat penghalang untuk gerak Aqua, dengan tanaman Planted
	cout<<"Ditaruh tanaman yang belum diairi pada posisi (5,6) dan (5,4)"<<endl;
	B.SetX(6);
	B.SetY(5);
	A.SetX(5);
	A.SetY(5);
	P.SetPosition(4,5);
	if(A.IsSafeToWalk(5,6))
	{cout<<"Aqua : Aman!"<<endl;}
	else {cout<<"Aqua : Tidak Aman!"<<endl;}
	
	if(A.IsTargetting())//Memeriksa apakah Aqua sudah memiliki tanaman untuk ditarget.
	{cout<<"Aqua : Saya menarget sebuah tanaman."<<endl;}
	else {cout<<"Aqua : Tidak ada tanaman yang layak untuk disirami. Pfft."<<endl;}
	
	cout<<"Posisi Bolt saat ini: "<<B.GetX()<<" , "<<B.GetY()<<endl;
	cout<<"Posisi Aqua saat ini: "<<A.GetX()<<" , "<<A.GetY()<<endl;
	B.Move(); //Bolt, yang menjadi penghalang digerakkan, agar Bolt memiliki tempat untuk bergerak.
	A.Move(); //Aqua bergerak
	
	if(A.IsTargetting())
	{cout<<"Aqua :Saya menarget sebuah tanaman."<<endl;
		Position glare;
		glare = A.GetChase();
		cout<<"Tanaman yang saya target terletak di ("<<glare.x<<","<<glare.y<<")"<<"."<<endl;}
	else {cout<<"Aqua : Tidak ada tanaman yang layak untuk disirami. Pfft."<<endl;}
	
	
	cout<<"Posisi Bolt setelah bergerak: "<<B.GetX()<<" , "<<B.GetY()<<endl;
	cout<<"Posisi Aqua setelah bergerak: "<<A.GetX()<<" , "<<A.GetY()<<endl;
	
	cout<<"Berikut, kita akan memperhatikan gerak Aqua dan bagaimana ia menyirami tanaman."<<endl;
	
	while(A.IsTargetting())
	{
		B.Move(); // Bolt diminta bergerak agar tidak menghalangi jalan.
		A.Move(); // Aqua bergerak, dimana Aqua juga melakukan ActKurcaci bila ia memiliki target tanaman.
		
		if(L.getStatus(5,6) == 6)
		{
			cout<<"Tanaman di Posisi (5,6) telah diairi."<<endl;
		}
		else
		{cout<<"Tanaman di Posisi (5,6) belum diairi."<<endl;
		}
		
		if(L.getStatus(5,4) == 6)
		{
			cout<<"Tanaman di Posisi (5,4) telah diairi."<<endl;
		}
		else
		{cout<<"Tanaman di Posisi (5,4) belum diairi."<<endl;
		}
		
		B.Move(); // Bolt diminta bergerak agar tidak menghalangi jalan.
		A.Move(); // Aqua bergerak, dimana Aqua juga melakukan ActKurcaci bila ia memiliki target tanaman.
		
	}
	
	A.Sleep();
	if(A.IsWakeUp())
	{cout<<"Aqua : Saya bangun!"<<endl;}
	else {cout<<"Aqua : Selamat tidur!"<<endl;}
	
	return 0;
}
